import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// 实例化Vuex对象（store对象），并把它暴露出去
export default new Vuex.Store({
  // 开启严格模式：但凡你的代码不符合vuex建议的写法，都会报错
  strict: true,
  // vuex里放数据的地方
  state: {
    count: 3
  },

  // vuex里放方法的地方
  mutations: {
    // mutations里的方法，参数1都是固定的叫state
    // 这个state就是当前store对象里的state
    addCount (state) {
      state.count++
    },

    // 参数2就是它额外接收的参数，也就是调用它时传递的参数
    // 最多只能接收1个额外的参数
    // 如果就是想传多个数据，那就包成对象、数组来传递
    addCountWithNum (state, num) {
      // console.log(num)
      state.count += num
    },
  },

  // vuex里专门放异步方法的地方
  actions: {
    // 参数1是固定的context，或者可以简写为ctx
    // 代表当前store对象
    reqCount (ctx, num, num2) {
      console.log(num, num2)
      setTimeout(() => {
        ctx.commit('addCountWithNum', 100)
      }, 800);
    }
  }
})
